package com.huluobo.a2109kotlinshopping.utils

import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.huluobo.a2109kotlinshopping.R

/**
 *  Created by LC on 2024/1/13.
 *  object 是kotlin中的一种单例模式,其中的方法可以直接调用,并且以对象的形式存在
 */
object ImageUtils {
    /**
     * 加载普通图片
     */
    fun loadImage(context: Context, url: String, imageView: ImageView) {
        Glide.with(context)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))//占位图,当图片没加载出来的时候会使用灰色背景进行占位
            .error(R.drawable.baseline_error_24)//错误图片,当图片加载错误的时候,会展示的图片
            .skipMemoryCache(true)//设置是否跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.ALL)//设置全局使用磁盘缓存
            .transform(CenterCrop())//展示图片的方式,设置从中心开始拉伸
            .into(imageView)
    }

    /**
     * 设置圆形图片
     */
    fun loadCircleImage(context: Context, url: String, imageView: ImageView) {
        Glide.with(context)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))//占位图,当图片没加载出来的时候会使用灰色背景进行占位
            .error(R.drawable.baseline_error_24)//错误图片,当图片加载错误的时候,会展示的图片
            .skipMemoryCache(true)//设置是否跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.ALL)//设置全局使用磁盘缓存
            .transform(CenterCrop(), CircleCrop())//展示图片的方式,设置从中心开始拉伸,并且设置圆形图片
            .into(imageView)
    }

    /**
     * 加载圆角图片
     */
    fun loadRoundImage(context: Context, url: String, radius: Int, imageView: ImageView) {
        Glide.with(context)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))//占位图,当图片没加载出来的时候会使用灰色背景进行占位
            .error(R.drawable.baseline_error_24)//错误图片,当图片加载错误的时候,会展示的图片
            .skipMemoryCache(true)//设置是否跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.ALL)//设置全局使用磁盘缓存
            .transform(CenterCrop(), RoundedCorners(radius))//展示图片的方式,设置从中心开始拉伸,并且设置圆角图片
            .into(imageView)
    }

}